package com.itheima.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.util.Random;

/**
 * 阿里云工具类
 */
public class AliyunUtils {

    /*用户登录名称 yiliaojiankang@1129383587820551.onaliyun.com
    AccessKey ID LTAI4FwEMxKypWz9fFtY3vZu
    AccessKeySecret gvmJTzZetsaTn044WbSwPh5OSUHIOl*/

    public  static String accessKeyId = "LTAI4FwEMxKypWz9fFtY3vZu";
    public  static String accessKeySecret = "gvmJTzZetsaTn044WbSwPh5OSUHIOl";
    public  static String bucketName = "health-space01";
    public  static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";


    public static void uploadAliyun(String fileName,File file){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = AliyunUtils.endpoint;
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = AliyunUtils.accessKeyId;
        String accessKeySecret = AliyunUtils.accessKeySecret;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(AliyunUtils.bucketName, fileName, file);

        // 如果需要上传时设置存储类型与访问权限，请参考以下示例代码。
        // ObjectMetadata metadata = new ObjectMetadata();
        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
        // metadata.setObjectAcl(CannedAccessControlList.Private);
        // putObjectRequest.setMetadata(metadata);

        // 上传文件。
        ossClient.putObject(putObjectRequest);

        // 关闭OSSClient。
        ossClient.shutdown();
    }

    //上传文件 通过二进制数组和文件名称进行上传
    public static void uploadAliyun(byte[] bytes, String fileName){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = AliyunUtils.endpoint;
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = AliyunUtils.accessKeyId;
        String accessKeySecret = AliyunUtils.accessKeySecret;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret);

        // 上传Byte数组。
        ossClient.putObject(AliyunUtils.bucketName, fileName, new ByteArrayInputStream(bytes));

        // 关闭OSSClient。
        ossClient.shutdown();
    }


    //删除文件
    public static void deleteFileFromAliyun(String fileName){

        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = AliyunUtils.endpoint;
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = AliyunUtils.accessKeyId;
        String accessKeySecret = AliyunUtils.accessKeySecret;
        String bucketName = AliyunUtils.bucketName;
        String objectName = fileName;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 删除文件。如需删除文件夹，请将ObjectName设置为对应的文件夹名称。如果文件夹非空，则需要将文件夹下的所有object删除后才能删除该文件夹。
        ossClient.deleteObject(bucketName, objectName);

        // 关闭OSSClient。
        ossClient.shutdown();
    }
}
